package com.techsoul.module.order.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.techsoul.module.order.pojo.entity.SalesOrderItem;
import com.techsoul.module.order.pojo.param.SalesOrderItemSearchParam;
import com.techsoul.module.order.pojo.vo.SalesOrderItemBrandRateViewVo;
import com.techsoul.module.order.pojo.vo.SalesOrderItemFailedVo;
import com.techsoul.module.order.pojo.vo.SalesOrderItemSupplierRateViewVo;
import com.techsoul.module.order.pojo.vo.SalesOrderItemVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 销售订单明细Mapper接口
 * 
 * @author liuen
 * @date 2020-12-07
 */
public interface SalesOrderItemMapper extends BaseMapper<SalesOrderItem> {

    /**
     * 详情
     * @param id
     * @return
     */
    SalesOrderItemVo findById(String id);
    List<SalesOrderItem> findByCustSalesOrderItemNoAndOrProductSkuCode(@Param("itemNo") String itemNo,@Param("skuNo") String skuNo);
    List<SalesOrderItem> findByCustSalesOrderItemNoAndOrProductSpuCode(@Param("itemNo") String itemNo,@Param("spuNo") String spuNo);
    List<SalesOrderItemVo> findBySkuCode(@Param("skuId") String skuId);
    BigDecimal findItemStockQty(@Param("skuId") String skuId,@Param("SiteCode") String siteCode);
    List<SalesOrderItemVo> findBySkuCodeWithActcode(@Param("skuId") String skuId,@Param("actCode") String actCode);
    SalesOrderItemVo findByCustSalesOrderItemNo(String custSalesOrderItemNo);
    SalesOrderItem findByEntityCustSalesOrderItemNo(String custSalesOrderItemNo);

    List<SalesOrderItemFailedVo> findfailed(@Param("params") SalesOrderItemSearchParam params);
    /**
     * 详情
     * @param id
     * @return
     */
    SalesOrderItem findEntityById(String id);

    /**
     * 列表
     * @param params
     * @return
     */
    List<SalesOrderItemVo> findAll(@Param("params") SalesOrderItemSearchParam params);

    /**
     * 分页
     * @param page
     * @param params
     * @return
     */
    IPage<SalesOrderItemVo> findAll(Page page, @Param("params") SalesOrderItemSearchParam params);

    /**
     * 单品销售排行分页
     * @param page
     * @param params
     * @return
     */
    IPage<SalesOrderItemVo> skuRateView(Page page, @Param("params") SalesOrderItemSearchParam params);
    /**
     * 品牌排行分页
     * @param page
     * @param params
     * @return
     */
    //IPage<SalesOrderItemBrandRateViewVo> brandRateView(Page page, @Param("params") SalesOrderItemSearchParam params);

    /**
     * 供应商分页
     * @param page
     * @param params
     * @return
     */
   // IPage<SalesOrderItemSupplierRateViewVo> supplierRateView(Page page, @Param("params") SalesOrderItemSearchParam params);
    /**
     * 订单数 按区域查询
     * @param site
     * @return
     */
    Integer findTotalOrder(String site);

    /**
     * 订单数 当天按区域查询
     * @param params
     * @return
     */
    Integer findTotalTodayOrder(@Param("params") SalesOrderItemSearchParam params);

    /**
     * 采购额 按区域查询
     * @param params
     * @return
     */
    BigDecimal countTotalPurchase(@Param("params") SalesOrderItemSearchParam params);
    /**
     * 销售额 按区域查询
     * @param params
     * @return
     */
    BigDecimal countTotalSale(@Param("params") SalesOrderItemSearchParam params);

}
